package com.hyts.mvc.annotation;

import com.hyts.mvc.config.RequestMethod;
import com.hyts.mvc.config.BodyType;
import com.hyts.mvc.base.interceptor.Interceptor;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * project-name:coffice-toolbox
 * package-name:com.hyts.mvc.annotation
 * author:Libo/Alex
 * create-date:2019-06-16 18:12
 * copyright:libo-hyts-github
 * email:libo2dev@aliyun.com
 * description:此类主要用于: mvc mapping映射服务实现处理
 */
@Target({ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface MvcMapping {

    /**
     * 数值默认值
     * @see MvcMapping#path()
     * @return
     */
    String[] value() default "";

    /**
     * 路径请求
     * @return
     */
    String[] path() default "";

    /**
     * 方法
     * @return
     */
    RequestMethod method() default RequestMethod.ALL;

    /**
     * 排除拦截器
     * @return
     */
    Class<? extends Interceptor>[] excludeInterceptors() default {};

    /**
     * responseBodyType 响应体的类型-可以直接处理对应的返回类型
     * @return
     */
    BodyType responseType() default BodyType.REST;

}
